Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541
Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541jdaugherty merged 54 commits into8.0.xfrom
Conversation
# Conflicts: # dependencies.gradle # grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java # grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy # grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy
The 8.0.x merge reintroduced several items that had been removed or updated for Spring Boot 4 compatibility: - Remove vendored Spring theme files (10 files) already removed by #15457 - Remove theme references from GrailsApplicationContext (ThemeSource, onRefresh, getTheme) - Remove LoaderImplementation import and CLASSIC loader convention from GrailsGradlePlugin (removed in Spring Boot 4) - Add missing SessionFactoryUtils vendored import in GrailsOpenSessionInViewInterceptor - Add spring-boot-hibernate dependency for HibernateJpaAutoConfiguration package relocation in test example Assisted-by: Claude Code <Claude@Claude.ai>
ThemeSource (org.springframework.ui.context.ThemeSource) was removed in Spring Framework 7.0. GrailsWebApplicationContext imported and implemented this interface, causing grails-web-core compilation failure and cascading all downstream CI jobs. Assisted-by: Claude Code <Claude@Claude.ai>
Sort org.springframework imports alphabetically before the grails/org.grails group to satisfy checkstyle ImportOrder rule. Assisted-by: Claude Code <Claude@Claude.ai>
- Update ApplicationClassInjectorSpec to expect relocated HibernateJpaAutoConfiguration class - Use forked SessionHolder in MultiDataSourceSessionSpec - Add missing RestoreSystemProperties import in MongoDB specs - Remove Spring Theme/ThemeSource references deleted in Spring 7 - Add spring-boot-jdbc test dependency for DataSourceAutoConfiguration Assisted-by: Claude Code <Claude@Claude.ai>
Checkstyle requires explicit imports per AvoidStarImport rule. Assisted-by: Claude Code <Claude@Claude.ai>
- Remove unused imports (ObjectProvider, UrlMappings) in UrlMappingsAutoConfiguration to fix checkstyle - Add spring-boot-hibernate test dependency to grails-data-hibernate5 boot-plugin for relocated HibernateJpaAutoConfiguration class - Update spring.data.mongodb.* to spring.mongodb.* in MongoDB boot-plugin test specs (property renamed in Spring Boot 4) - Disable integrationTest for modules using grails-spring-security (app1, app3, exploded, plugins/exploded, mongodb/test-data-service) until plugin is updated for Spring Boot 4 - Disable integrationTest for gsp-sitemesh3 (SiteMesh3 incompatible with Spring Framework 7) - Ignore JSP test in gsp-layout (JSP/theme support removed in Spring Framework 7, see #15457) - Disable groovydoc for micronaut-singleton test plugin to avoid Groovy version conflict (4.0.29 vs 4.0.30 from Micronaut platform) Assisted-by: Claude Code <Claude@Claude.ai>
Adapt AbstractGrailsMockHttpServletResponse to Spring 7 changes in MockHttpServletResponse and restore the previous reset() behavior.
# Conflicts: # grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy # grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
Spring Boot 4.0 moved BootstrapRegistry, BootstrapRegistryInitializer, and ConfigurableBootstrapContext from org.springframework.boot to org.springframework.boot.bootstrap. Update all references and the spring.factories key to use the new package paths. Assisted-by: Claude Code <Claude@Claude.ai>
…elocations DataSourceAutoConfiguration moved from org.springframework.boot.autoconfigure.jdbc to org.springframework.boot.jdbc.autoconfigure and ReactorAutoConfiguration moved from org.springframework.boot.autoconfigure.reactor to org.springframework.boot.reactor.autoconfigure. Update both the source constant and the test expectations. Assisted-by: Claude Code <Claude@Claude.ai>
There was a problem hiding this comment.
Pull request overview
Upgrades Grails Core to Spring Boot 4.0.5 / Spring Framework 7.0.6 and applies the required compatibility changes across core, web, testing, MongoDB, and Hibernate 5.6-jakarta integration (including vendoring removed Spring ORM Hibernate 5 support).
Changes:
- Update build/dependency coordinates, Spring Boot 4 package relocations, and related API migrations (bootstrapping, web server, MVC, MongoDB properties, etc.).
- Remove Spring theme/JSP/theme infrastructure (now removed upstream) and adjust affected tests.
- Vendor Spring ORM Hibernate 5 integration classes into
grails-data-hibernate5to preserve Hibernate 5.6-jakarta support under Spring Framework 7.
Reviewed changes
Copilot reviewed 134 out of 135 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| grails-wrapper/build.gradle | Switch JUnit Platform dependency from runner to suite. |
| grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy | Update request character encoding call to avoid ambiguity. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy | Update Spring Boot 4 import relocations for error-page customization. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy | Remove obsolete @Override for removed Spring MVC API. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy | Update interceptor matching to new Spring MVC API. |
| grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy | Replace removed/deprecated status constant with FOUND (302). |
| grails-web-url-mappings/build.gradle | Add Boot modularized web-server/servlet compileOnly deps; update JUnit Platform dependency. |
| grails-web-mvc/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-databinding/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-core/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java | Remove Spring theme support interface/notes. |
| grails-web-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilters.java | Replace removed Boot SecurityProperties constant usage with internal constant. |
| grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilterOrder.java | Introduce internal filter-order constant for Boot 4 migration. |
| grails-web-common/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy | Ignore embedded server spec pending Boot 4 modularization rework. |
| grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy | Ignore embedded container spec pending Boot 4 modularization rework. |
| grails-web-boot/build.gradle | Update JUnit Platform dependency to suite. |
| grails-validation/build.gradle | Update JUnit Platform dependency to suite. |
| grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsAutoConfiguration.java | Simplify error page customizer bean definition for Boot 4 changes. |
| grails-url-mappings/build.gradle | Add Boot servlet API dependency; update JUnit Platform dependency. |
| grails-testing-support-mongodb/build.gradle | Update Testcontainers MongoDB dependency coordinate. |
| grails-testing-support-datamapping/build.gradle | Update JUnit Platform exclusion to suite. |
| grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy | Replace removed Boot servlet app context class; manual annotation processor registration. |
| grails-testing-support-core/build.gradle | Add spring-webmvc; update JUnit Platform dependency to suite. |
| grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy | Modernize/rename Spock tests; improve assertions/messages. |
| grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy | Update assertion text/status constant to FOUND (302). |
| grails-test-suite-persistence/build.gradle | Update JUnit Platform dependency to suite. |
| grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java | Add getBeanProvider(ParameterizedTypeReference) to match updated Spring APIs. |
| grails-test-suite-base/build.gradle | Update JUnit Platform dependency to suite. |
| grails-test-examples/plugins/micronaut-singleton/build.gradle | Disable groovydoc task for example plugin. |
| grails-test-examples/plugins/exploded/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/mongodb/test-data-service/build.gradle | Update Testcontainers MongoDB dependency coordinate; disable integrationTest for security incompatibility. |
| grails-test-examples/hibernate5/spring-boot-hibernate/src/main/groovy/example/Application.groovy | Update Boot package relocation for Hibernate JPA autoconfig exclusion. |
| grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle | Add Boot autoconfigure/hibernate compileOnly deps for relocation. |
| grails-test-examples/gsp-sitemesh3/build.gradle | Disable integrationTest due to SiteMesh3 incompatibility with Spring 7. |
| grails-test-examples/gsp-layout/src/test/groovy/org/apache/grails/views/gsp/layout/AbstractGrailsTagTests.groovy | Remove theme support usage; swap to GenericWebApplicationContext; reorder imports. |
| grails-test-examples/gsp-layout/src/integration-test/groovy/GrailsLayoutSpec.groovy | Ignore JSP demo test now that JSP support is removed. |
| grails-test-examples/exploded/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/app3/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/app1/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-core/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy | Adjust reset behavior for Spring mock response internal changes. |
| grails-test-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java | Remove deprecated theme support methods/fields. |
| grails-spring/build.gradle | Update JUnit Platform dependency; exclude vendored Spring UI classes from checkstyle. |
| grails-shell-cli/build.gradle | Update JUnit Platform dependency to suite. |
| grails-services/build.gradle | Update JUnit Platform dependency to suite. |
| grails-rest-transforms/build.gradle | Update JUnit Platform dependency to suite. |
| grails-mimetypes/build.gradle | Update JUnit Platform dependency to suite. |
| grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java | Replace Slf4j AST transformation usage with manual logger field injection. |
| grails-logging/build.gradle | Update JUnit Platform dependency to suite. |
| grails-interceptors/build.gradle | Update JUnit Platform dependency to suite. |
| grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nAutoConfiguration.java | Update Boot package relocation for WebMvc autoconfiguration. |
| grails-i18n/build.gradle | Add boot-webmvc compileOnly; update JUnit Platform dependency. |
| grails-gsp/spring-boot/src/main/java/grails/gsp/boot/GspAutoConfiguration.java | Update Boot package relocation for WebMvc autoconfiguration. |
| grails-gsp/spring-boot/build.gradle | Add boot-webmvc compileOnly dependency. |
| grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/AbstractGrailsTagTests.groovy | Remove theme support usage; swap to GenericWebApplicationContext; reorder imports. |
| grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy | Remove Boot loader implementation configuration (removed in Boot 4). |
| grails-gradle/model/build.gradle | Update JUnit Platform dependency to suite. |
| grails-geb/build.gradle | Update Selenium Testcontainers dependency coordinate. |
| grails-encoder/build.gradle | Update JUnit Platform dependency to suite. |
| grails-domain-class/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datasource/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datamapping-rx/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datamapping-core/src/test/groovy/grails/gorm/annotation/transactions/TransactionalTransformSpec.groovy | Update DefaultTransactionStatus constructor usage for Spring 7 signature. |
| grails-databinding/build.gradle | Update JUnit Platform dependency to suite. |
| grails-databinding-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-data-neo4j/build.gradle | Update JUnit Platform dependency to suite. |
| grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy | Update Boot package relocation and MongoDB property keys. |
| grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy | Update Boot package relocation and MongoDB property keys. |
| grails-data-mongodb/boot-plugin/src/main/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfiguration.groovy | Update Boot package relocation for Mongo auto-config/properties. |
| grails-data-mongodb/boot-plugin/build.gradle | Add new Boot mongodb module dependency for relocated classes. |
| grails-data-hibernate5/grails-plugin/src/test/groovy/org/grails/plugin/hibernate/support/MultiDataSourceSessionSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/HibernatePersistenceContextInterceptor.java | Switch imports to vendored Spring ORM Hibernate 5 utilities. |
| grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java | Switch imports to vendored Spring ORM Hibernate 5 utilities/interceptor. |
| grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/org/apache/grails/data/hibernate5/core/GrailsDataHibernate5TckManager.groovy | Switch imports to vendored SessionFactoryUtils/SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/WithNewSessionAndExistingTransactionSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/BeanValidationSpec.groovy | Replace deprecated Hibernate validator annotation with Jakarta validation. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/HibernateOptimisticLockingSpec.groovy | Switch imports to vendored optimistic locking exception. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/OpenSessionInViewInterceptor.java | Vendored Spring ORM OSIV interceptor (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/AsyncRequestInterceptor.java | Vendored Spring ORM async request interceptor (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionSynchronization.java | Vendored Spring ORM transaction synchronization (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionContext.java | Vendored Spring ORM current session context (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringJtaSessionContext.java | Vendored Spring ORM JTA session context (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringFlushSynchronization.java | Vendored Spring ORM flush synchronization (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringBeanContainer.java | Vendored Spring ORM bean container integration (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionHolder.java | Vendored Spring ORM SessionHolder (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionFactoryUtils.java | Vendored Spring ORM SessionFactoryUtils (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBuilder.java | Vendored Spring ORM SessionFactory builder (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBean.java | Vendored Spring ORM SessionFactory FactoryBean (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateTransactionManager.java | Vendored Spring ORM HibernateTransactionManager (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateSystemException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateQueryException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateOptimisticLockingFailureException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateObjectRetrievalFailureException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateJdbcException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateExceptionTranslator.java | Vendored Spring ORM persistence exception translator. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateCallback.java | Vendored Spring ORM callback interface. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/ConfigurableJtaPlatform.java | Vendored Spring ORM JTA platform adapter. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java | Switch to vendored HibernateExceptionTranslator import. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy | Switch to vendored SessionHolder import. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java | Switch to vendored Spring ORM session/flush synchronization types. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTransactionManager.groovy | Switch to vendored HibernateTransactionManager/SessionHolder. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java | Switch to vendored SessionFactoryUtils/SessionHolder. |
| grails-data-hibernate5/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java | Switch to vendored SessionHolder. |
| grails-data-hibernate5/core/build.gradle | Add Spring Web deps; exclude vendored code from checkstyle. |
| grails-data-hibernate5/boot-plugin/src/test/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfigurationSpec.groovy | Remove outdated Boot JDBC imports in spec. |
| grails-data-hibernate5/boot-plugin/src/main/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfiguration.groovy | Update Boot package relocations for datasource/hibernate autoconfig. |
| grails-data-hibernate5/boot-plugin/build.gradle | Add compile/test deps for relocated Boot JDBC/Hibernate modules. |
| grails-data-graphql/examples/spring-boot-app/src/main/groovy/com/example/demo/DemoApplication.groovy | Update Boot package relocation for Hibernate JPA autoconfig exclusion. |
| grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy | Update expected Boot autoconfiguration class names (new packages). |
| grails-core/src/test/groovy/grails/boot/config/GrailsEnvironmentPostProcessorSpec.groovy | Update bootstrap API import relocation. |
| grails-core/src/main/resources/META-INF/spring.factories | Update BootstrapRegistryInitializer key for Boot 4. |
| grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy | Update excluded Boot autoconfiguration class list to new packages. |
| grails-core/src/main/groovy/org/apache/grails/core/GrailsBootstrapRegistryInitializer.java | Update bootstrap API imports + Javadoc key reference. |
| grails-core/src/main/groovy/grails/config/external/ExternalConfigRunListener.groovy | Update bootstrap API import relocation. |
| grails-core/src/main/groovy/grails/boot/GrailsApp.groovy | Update WebServerApplicationContext import relocation. |
| grails-core/src/main/groovy/grails/boot/config/GrailsEnvironmentPostProcessor.java | Update bootstrap API import relocation. |
| grails-core/build.gradle | Add modularized spring-boot-web-server dependency; update JUnit Platform dependency. |
| grails-converters/build.gradle | Update JUnit Platform dependency to suite. |
| grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersAutoConfiguration.java | Update Boot package relocations for servlet/webmvc autoconfigure classes. |
| grails-controllers/build.gradle | Add Boot webmvc/servlet modules; update JUnit Platform dependency. |
| grails-console/build.gradle | Update JUnit Platform dependency to suite. |
| grails-common/build.gradle | Update JUnit Platform dependency to suite. |
| grails-codecs/build.gradle | Update JUnit Platform dependency to suite. |
| grails-codecs-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-bootstrap/build.gradle | Update JUnit Platform dependency to suite. |
| grails-bom/build.gradle | Override Spring Boot groovy.version property to keep Groovy 4.0.x for Grails. |
| dependencies.gradle | Upgrade Spring Boot version and Groovy version; add loader-tools to gradle BOM deps. |
| build.gradle | Force Groovy 4.0.31 artifacts to override Spring Boot’s default Groovy 5. |
| build-logic/docs-core/build.gradle | Update JUnit Platform dependency to suite. |
| AGENTS.md | Update documented Spring Boot/Framework versions. |
| .agents/skills/grails-developer/SKILL.md | Update skill documentation for new Spring Boot/Framework versions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...n/java/org/grails/orm/hibernate/support/hibernate5/support/OpenSessionInViewInterceptor.java
Show resolved
Hide resolved
grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilterOrder.java
Outdated
Show resolved
Hide resolved
grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy
Outdated
Show resolved
Hide resolved
grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
Outdated
Show resolved
Hide resolved
- Update vendored OpenSessionInViewInterceptor Javadoc @link and @see references to point to the vendored HibernateTransactionManager class instead of the removed org.springframework.orm.hibernate5 package - Clarify GrailsFilterOrder Javadoc to state the concrete value (-100) and cite the original OrderedFilter.REQUEST_WRAPPER_FILTER_MAX_ORDER computation instead of referencing an undefined symbol - Clean up GrailsSpringApplicationSpec and EmbeddedContainerWithGrailsSpec to remove commented-out code and placeholder assertions that would silently pass if re-enabled; tests now throw UnsupportedOperationException behind @ignore with TODO markers for Spring Boot 4.0 rework Assisted-by: Claude Code <Claude@Claude.ai>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
I believe I've fixed the micronaut related issues & I've added a new check . If we ever have a transitive dependency mismatch again, this will fail in CI. |
This comment has been minimized.
This comment has been minimized.
|
FYI: It does look like Spring switched to jackson 3 by default: https://www.danvega.dev/blog/2025/11/10/jackson-3-spring-boot-4 They may be supporting the older one, but we may want to consider forcing jackson 3 to not get behind. |
|
Micronaut is now compiled with java 25: https://github.com/micronaut-projects/micronaut-core/blob/c9efb634a0bc1ad5f6cb62e58092da1976b8edb8/.github/workflows/gradle.yml This means we'll have to update the micronaut related code to require java 25. |
🚨 TestLens detected 16 failed tests 🚨Here is what you can do:
Test Summary
🏷️ Commit: 75e7336 Test Failures (first 5 of 16)CreateAppSpec > test create-app with micronaut feature (:test-core:test [grails-forge] in CI / Build Grails Forge (Java 21, indy=false))MicronautHttpClientSpec > test dependencies (:grails-forge-core:test [grails-forge] in CI / Build Grails Forge (Java 21, indy=false))SpringBootDevToolsSpec > test spring-boot-devtools is not applied when grails-micronaut is selected (:grails-forge-core:test [grails-forge] in CI / Build Grails Forge (Java 21, indy=false))CreateAppSpec > test create-app with micronaut feature (:test-core:test [grails-forge] in CI / Build Grails Forge (Java 21, indy=true))MicronautHttpClientSpec > test dependencies (:grails-forge-core:test [grails-forge] in CI / Build Grails Forge (Java 21, indy=true))Muted TestsNote Checks are currently running using the configuration below. Select tests to mute in this pull request: 🔲 CreateAppSpec > test create-app with micronaut feature Reuse successful test results: 🔲 ♻️ Only rerun the tests that failed or were muted before Click the checkbox to trigger a rerun: 🔲 Rerun jobs Learn more about TestLens at testlens.app. |
eaf31c8 to
fed8476
Compare
|
I've pushed the forge test updates due to the java 25 requirement & I've updated to Jackson 3 |
Summary
This PR upgrades Grails Core to Spring Boot 4.0.5 and Spring Framework 7.0.6, bringing major framework updates, compatibility fixes, and Micronaut 5 support.
This PR uses Groovy 4.0.x and Hibernate 5.6-jakarta, since work on Groovy 5 and Hibernate 7.2 is progressing on other branches.
Includes merge from 8.0.x branch (7.0.x/7.1.x merge-ups, PluginDiscovery system, deprecations, new
grails-testing-support-http-clientmodule,@CompileStatictag lib support,DatabaseCleanupannotation inheritance, functional test migrations)Dependency Upgrades
Key Changes
Spring Boot 4 / Spring Framework 7 Migration
spring-boot-webmvc,spring-boot-servlet,spring-boot-mongodbspring.data.mongodb.*tospring.mongodb.*HttpStatus.MOVED_TEMPORARILYreplaced withHttpStatus.FOUNDHandlerAdapter.getLastModified()removedorg.springframework.boot.bootstrappackageSpring Boot 4 Class Relocations
AnnotationConfigServletWebServerApplicationContexto.s.b.web.servlet.contexto.s.b.web.server.servlet.contextAnnotationConfigServletWebApplicationContexto.s.b.web.servlet.contexto.s.b.web.context.servletMongoAutoConfigurationo.s.b.autoconfigure.mongoo.s.b.mongodb.autoconfigureHibernateJpaAutoConfigurationo.s.b.autoconfigure.orm.jpao.s.b.hibernate.autoconfigureTomcatServletWebServerFactoryo.s.b.web.embedded.tomcato.s.b.tomcat.servletBootstrapRegistryInitializero.s.bo.s.b.bootstrapVendored Spring ORM Hibernate 5
org.springframework.orm.hibernate5package entirelygrails-data-hibernate5-spring-ormsubprojectorg.grails.orm.hibernate.support.hibernate5Tomcat 11 Compatibility - JSP Layout Fix
finish()on the response afterRequestDispatcher.forward(), committing the response before the layout decorator can writeGrailsContentBufferingResponse.isCommitted()returnstrueto forceInternalResourceViewto useinclude()instead offorward()reset()/resetBuffer()overrides inGrailsPageResponseWrapperto prevent Tomcat from clearing buffer state during dispatchMicronaut 5.0.0-M1 with JDK 21 Toolchain
micronautPlatformVersionfrom 4.9.2 to 5.0.0-M1 (Spring Boot 4 compatible)grails-micronautand all Micronaut-dependent test modules use Gradle JDK 21 toolchainBOM / Dependency Management
jackson.versionoverride fromdependencies.gradle- Spring Boot 4 manages both Jackson 2.x and 3.xgroovy.versionPOM override fromgrails-bom- reverted to historical 7.0.x behaviorcom.fasterxml.jacksonexclusion from Spring Boot BOM importTest Fixes
AbstractGrailsTagTeststo useAnnotationConfigServletWebServerApplicationContextat new SB4 package_table.gsptemplate Groovy type coercion in modulo expression (fixes scaffolding functional tests)SpringBootSpec- Undertow servlet is unavailable in Spring Boot 4UrlMappingsAutoConfigurationsimplification per review discussionDocumentation
upgrading80x.adoc) covering all breaking changesHibernateJpaAutoConfigurationpackageMongoAutoConfigurationpackageKnown Issues
grails-test-examples/micronautmodule'sassetCompiletask throws NPE on JDK 21 (pre-existing asset-pipeline compatibility issue)./gradlew buildin generated apps (environment-dependent, not a code issue)tools.jacksonnot feasible until Spring ecosystem completes their migration (assessed and documented in PR comments)Files Changed
212 files changed, 7181 insertions, 512 deletions